package com.zmn.oms.business.interfaces.messageV1.common;

import com.zmn.oms.business.interfaces.messageV1.text.MessageSendTextService;
import com.zmn.oms.model.dto.messageV1.AppMessageDTO;
import com.zmn.oms.model.dto.messageV1.BaiduMessageDTO;
import com.zmn.oms.model.dto.messageV1.SmsMessageDTO;
import com.zmn.oms.model.dto.messageV1.WeChatMessageDTO;

import java.util.Map;

/**
 * 类描述：发送消息通用类
 *
 * @author yule
 * @date 2020/12/22 23:30
 */
public interface MessageSendBaseService {

    /**
     * 发送短信通用模板
     * 发送普通短信，请不要直接调用该方法，请调用下面方法
     * @see MessageSendTextService#sendTextMessage(java.lang.Integer, java.lang.String, java.util.Map)
     * @param ruleId 规则id 必须 用于找到模板
     * @param phone  电话号码
     * @param smsMap 模板参数，可在消息系统后台模板中查询。 数据格式示例：{"param0":000,"param1":"示例"}
     * @throws Exception
     */
    boolean sendTextMessage(Integer ruleId, String phone, Map<String, String> smsMap);

    /**
     * 发送短信
     *
     * @param smsMessageDTO 规则id 必须 用于找到模板
     * @throws Exception
     */
    boolean sendTextMessage(SmsMessageDTO smsMessageDTO);

    /**
     * 发送微信模板消息
     *
     * @throws Exception
     */
    String sendWeiXinMessage(WeChatMessageDTO weChatMessage);

    /**
     * 发送百度模板消息
     *
     * @throws Exception
     */
    boolean sendBaiduMessage(BaiduMessageDTO baiduMessageDTO);

    /**
     * 同时发送安卓和IOS消息
     * @param appMessageDTO
     * @throws Exception
     */
    boolean sendAndroidAndIOSMessage(AppMessageDTO appMessageDTO);

    /**
     * 同时发送安卓和IOS消息-批量
     * @param appMessageDTO
     * @return
     */
    boolean batchSendAndroidAndIOSMessage(AppMessageDTO appMessageDTO);

}
